// 高阶函数 not() 返回一个新函数，新函数将它的实参传入f()
function not(f) {
    // 返回一个新函数
    return function () {
        // 调用f()
        var result = f.apply(this, arguments);
        // 结果求反
        return !result;
    }
}
// 判断一个数是否偶数
var even = function(x) {
    return x % 2 === 0
}
// 一个新函数，所做的事情与even()相反
var odd = not(even);

[1,1,3,3,5].every(odd);  // ==> true每个元素都是奇数

// mapper()返回的函数的参数是数组，对每个元素执行函数f()
// 返回所有计算结果组成的数组
function mapper (f) {
    return function(a) {
        return map(a, f)
    }
}
var increment = function(x) {
    return x + 1;
}
var incrementer = mapper(increment)
incrementer([1,2,3])